package com.gzsxy.esjy.service.core.sign.service.doc;


import com.gzsxy.esjy.service.base.DictionaryConstants;
import lombok.extern.slf4j.Slf4j;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author zhangxiaolong
 * @date 2022/7/13 11:36
 */
@Service
@Slf4j
public class DocTypeService {
    @Autowired
//    private ProcessBusinessService processBusinessService;

    /**
     * 定制文书地区
     */
    @Value("${document.diy.area:default}")
    private String arraignDocumentDiyArea;

    /**
     * 根据文书类型获取流程编码
     *
     * @param documentType 1-提讯提解证；2-在押人员签名文件；3-在押人员签名笔录, 4-逮捕证，
     *                     5-变更羁押通知书，6-鉴定意见通知书，9-逮捕-移送审查起诉告知书
     * @return
     */
//    public String getByDocumentType(Integer documentType) {
//        switch (documentType) {
//            case 1:
//                return getProcessCode(TXTJZ);
//            case 2:
//                return getProcessCode(ZYRYQMWJ);
//            case 3:
//                return getProcessCode(ZYRYQMBL);
//            case 4:
//                return getProcessCode(DBZ);
//            case 5:
//                return getProcessCode(BGJYTZS);
//            case 6:
//                return getProcessCode(JDYJTZS);
//            case 9:
//                return getProcessCode(DBYSSCQSGZS);
//            default:
//                log.error("getByDocumentType 没有对应文书类型：【{}】", documentType);
//                return "";
//        }
//    }

    /**
     * 传入流程编码，非默认地区才查询数据库是否存在对应流程，返回实际流程编码
     *
     * @param processCode
     * @return
     */
//    public String getProcessCode(String processCode) {
//        String areaAbbr;
//        if (!arraignDocumentDiyArea.equals(DictionaryConstants.DEFAULT)) {
//            //定制文书地区前缀
//            areaAbbr = DocumentDiyEnum.getAbbrByAreaName(arraignDocumentDiyArea);
//            ProcessBusinessDto dto = new ProcessBusinessDto();
//            dto.setCode(areaAbbr + processCode);
//            List<ProcessBusiness> list = (List<ProcessBusiness>) processBusinessService.selectList(dto);
//            if (CollectionUtils.isNotEmpty(list)) {
//                return areaAbbr + processCode;
//            }
//        }
//        return processCode;
//    }

    /**
     * 根据文书类型获取原始流程编码（不带地区前缀），为了兼容旧数据查询
     *
     * @param documentType 1-提讯提解证；2-在押人员签名文件；3-在押人员签名笔录, 4-逮捕证，
     *                     5-变更羁押通知书，6-鉴定意见通知书，9-逮捕-移送审查起诉告知书
     * @return
     */
//    public String getOriginalCodeByDocumentType(Integer documentType) {
//        switch (documentType) {
//            case 1:
//                return TXTJZ;
//            case 2:
//                return ZYRYQMWJ;
//            case 3:
//                return ZYRYQMBL;
//            case 4:
//                return DBZ;
//            case 5:
//                return BGJYTZS;
//            case 6:
//                return JDYJTZS;
//            case 9:
//                return DBYSSCQSGZS;
//            default:
//                log.error("getOriginalCodeByDocumentType 没有对应文书类型：【{}】", documentType);
//                return "";
//        }
//    }

    /**
     * 根据流程编码获取文书type
     *
     * @param processCode 流程编码
     * @return type 1-提讯提解证；2-在押人员签名文件；3-在押人员签名笔录, 4-逮捕证，
     *              5-变更羁押通知书，6-鉴定意见通知书，9-逮捕-移送审查起诉告知书
     */
//    public Integer getTypeByProcessCode(String processCode) {
//        if (processCode.contains(TXTJZ)) {
//            return DictionaryConstants.NUMBER_1;
//        } else if (processCode.contains(ZYRYQMWJ)) {
//            return DictionaryConstants.NUMBER_2;
//        } else if (processCode.contains(ZYRYQMBL)) {
//            return DictionaryConstants.NUMBER_3;
//        } else if (processCode.contains(DBZ)) {
//            return DictionaryConstants.NUMBER_4;
//        } else if (processCode.contains(BGJYTZS)) {
//            return DictionaryConstants.NUMBER_5;
//        } else if (processCode.contains(JDYJTZS)) {
//            return DictionaryConstants.NUMBER_6;
//        } else if (processCode.contains(DBYSSCQSGZS)) {
//            return DictionaryConstants.NUMBER_9;
//        }
//        log.error("getTypeByProcessCode 没有对应文书类型：【{}】", processCode);
//        return DictionaryConstants.NUMBER_0;
//    }
}
